9. Пользовательское ТВ
• Пользователь загружает видеофайлы
• Составляет плейлист
• По запросу других плейлист начинает проигрываться
10. Пользовательское ТВ
• Пользователь загружает видеофайлы
• Составляет плейлист
• По запросу других плейлист начинает проигрываться
• Если никому не нужно, то видео не играется
15. Что делает стример?
• Распаковывает видео и аудио из файловых контейнеров
• Упаковывает в транспортный контейнер
16. Что делает стример?
• Распаковывает видео и аудио из файловых контейнеров
• Упаковывает в транспортный контейнер
• Посылает кадры синхронно с реальным временем
17. Отступление про кодеки
• Кодек — формат представления сжатых аудио и видео данных
• Контейнер — формат упаковки одного и более потоков аудио и
видео в файле или в потоке
• H.264/AAC — лучшие кодеки
• MP4 — самый компактный файловый контейнер
18. Этапы User TV
• Скачать плейлист
• Распаковать файл
• Упаковать кадры в транспортный контейнер (RTMP, MPEG-TS,…)
• Зачистить всё, когда уйдут клиенты
• Позволить обновить код, не отключая клиентов
24. Проблемы классических
решений при тысячах клиентов
• Управление памятью: утекание, либо преждевременное
высвобождение
• Контроль за ресурсами клиентов
• Хаотическое разрушение системы при сбое в одном месте
• Ввод/вывод при обслуживании тысяч клиентов
33. Процессы
• Параллельные потоки выполнения
• Изолированная область памяти
• Обмен через посылку сообщений
• Переменные неизменяемые
• Нет данных вне процессов
35. Обработка ошибок
• Их можно ловить
• Если не ловить, то завершается процесс
• Соседи об этом узнают через сообщения
• Гарантированная зачистка ресурсов
42. Выводы
• Задачи потокового видео имеют специфику, отличающую их от
веба
• Необходимы инструменты эффективные и высокоуровневые
одновременно
• Erlang прекрасно вписывается в эту нишу
• Практическое использование показало эффективность выбора